import sys
from socket import *
import cv2
import os
if not os.path.exists('img'):
    os.mkdir('img')
# 准备一个
S = socket()
# IP地址
# IP = ''
IP = gethostname()
# 端口
port = 8888
# 绑定
S.bind((IP, port))
# 监听
S.listen()
# 接收
s, addr = S.accept()
print(addr)
# 发送字符串
s.send('你好'.encode())

# 发送数字
# s.send(str(11).encode())

# 用循环
# while True:
#     s, addr = S.accept()
#     print(addr)
#     s.send('你好'.encode())

# 菜单
print('1.关机\n 2.重启\n 3.监视')
# 输入
choise = input('请输入指令：')
# 发送过去
s.send(choise.encode())
# 关机 or或 重启
if choise == '1' or choise == '2':
    s.recv(1024)
    sys.exit(0)
# 监视
elif choise == '3':
    c = 1
    while True:
        # 接收图片大小
        size = int(s.recv(1024).decode())
        # 发送收到了图片大小
        s.send('ok'.encode())
        # 初始化大小
        cs = 0
        # 写入文件
        with open(f'img/{c}.jpg', 'wb') as file:
            # 循环
            while cs < size:
                # 接收图片
                data = s.recv(2048)
                file.write(data)
                # 累计
                cs += len(data)
                print(f'第{c}张图片，已接收：{cs / size * 100:.2f}%')
        c += 1

        # 创建显示图片窗口
        # cv2.namedWindow('51')
        cv2.namedWindow("51", cv2.WINDOW_NORMAL)  # 关键：允许手动调整窗口尺寸
        # cv2.resizeWindow("窗口名称", 宽度, 高度)  # 例如 (800, 600)
        cv2.resizeWindow("51", 800, 600)  # 例如 (800, 600)
        # 读取图片
        img_i = cv2.imread('11.jpg')
        # 显示图片
        cv2.imshow('51', img_i)
        cv2.waitKey(20)
        # 发送收到了图片
        s.send('ok'.encode())
































